项目中我们有时需要使用不同版本 的node来调试或测试程序,最本的方法当然是手动下载不同的版本,并卸载之前的版本,这样可以达到目的,但是无疑是麻烦时间的,在node中有“node版本管理器”来实现类似的功能需要。这里介绍比较流行的两个,“n
”和“nvm
”.
先说说n。
n是node一个模块,可以用来管理和切换node版本,其作者是TJ Holowaychuk(出名的Express框架作者),使用非常之简单。
安装 方法:
$ sudo npm install -g n |
常用命令:
$n //查看已安装版本 |
下面说说nvm
。
问题来了,既然有这么简单好用的n,那么nvm为什么还会大肆流行呢?这个问题一会回答,先说说nvm。
nvm全称Node Version Manager,不同于 n,nvm 不是一个 npm package,而是一个独立软件包。这意味着我们需要单独使用它的安装逻辑:
$ wget -qO- https://raw.github.com/creationix/nvm/v0.4.0/install.sh | sh |
对比说明:
我们在使用 n 管理 node 版本前,首先需要一个 node 环境。我们或者用 Homebrew 来安装一个 node,或者从官网下载 pkg 来安装,总之我们得先自己装一个 node —— n 本身是没法给你装的。
然后我们可以使用 n 来安装不同版本的 node。
在安装的时候,n 会先将指定版本的 node 存储下来,然后将其复制到我们熟知的路径 /usr/local/bin,非常简单明了。当然由于 n 会操作到非用户目录,所以需要加 sudo 来执行命令。
两者区别:
安装简易度。nvm 安装起来显然是要麻烦不少;n 这种安装方式更符合 node 的惯性思维。见仁见智吧。
系统支持。注意, nvm 不支持 Windows。
对全局模块的管理。n 对全局模块毫无作为,因此有可能在切换了 node 版本后发生全局模块执行出错的问题;nvm 的全局模块存在于各自版本的沙箱中,切换版本后需要重新安装,不同版本间也不存在任何冲突。
关于 node 路径。n 是万年不变的 /usr/local/bin;nvm 需要手动指定路径。
参考地址:
http://taobaofed.org/blog/2015/11/17/nvm-or-n/ 管理 node 版本,选择 nvm 还是 n?
http://it.taocms.org/03/3079.htm 利用n和nvm管理Node的版本